package com.hcss;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.ProgressCallback;
import org.mybatis.generator.api.VerboseProgressCallback;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @desc mybatis generator 使用启动类
 * @author maxiaoming
 * @date 2019-02-25 15:59
 * @company 浙江鸿程计算机系统有限公司
 */
public class MybatisGeneratorTool {
	/**
	 * 使用注意点：
	 * 1、idea 下需要设置【配置调试】的application的工作目录为 $MODULE_DIR$
	 * 2、generatorConfig.xml 中 targetProject="src/main/java" 不需要加项目名
	 * @param args
	 */
	public static void main(String[] args) {
		shell();
	}

	private static void shell() {
		List<String> warnings = new ArrayList<String>();
		try {
			String configFilePath = System.getProperty("user.dir")
					.concat("/src/main/resources/generatorConfig.xml");
			System.out.println("加载配置文件===" + configFilePath);
			boolean overwrite = true;
			File configFile = new File(configFilePath);
			ConfigurationParser cp = new ConfigurationParser(warnings);
			Configuration config = cp.parseConfiguration(configFile);
			DefaultShellCallback callback = new DefaultShellCallback(overwrite);
			MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
					callback, warnings);
			ProgressCallback progressCallback = new VerboseProgressCallback();
			// myBatisGenerator.generate(null);
			myBatisGenerator.generate(progressCallback);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		for (String warning : warnings) {
			System.out.println(warning);
		}
	}
}
